package Class.Homemade.demo0525.demo2;

import Class.Homemade.damo0523.demo2.Shape;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 姚东名
 * Date: 2024-05-25
 * Time: 21:14
 */
/*
接口的注意事项：
1.接口当中的成员变量，默认是public static final修饰的
2.接口当中的抽象方法，默认是public abstract修饰的
3.如果接口当中的方法被default修饰，那么可以有具体的方法实现
4.如果接口当中的方法被static 修饰，那么可以有具体的方法实现
5.接口是不可以进行实例化的
6.类与接口之间，可以使用implements来实现接口
7.一个接口，虽然不是一个源文件，但是还是对应一个字节码文件
8.如果一个类，不想实现这个接口当中的方法，那么此时这个类，就可以被定义为抽象类。假如这个抽象类如果被继承，那么就得实现所有的没有被实现的方法
 */
public class Test {
    public static void drawMap(IShape iShape) {
        iShape.draw();//发生动态绑定，假如传递iShape1，就是调用Cycle方法；假如传递iShape2，就是调用Rect方法
    }
    public static void main(String[] args) {
        //还是不能 对象的实例化
        //IShape iShape = new IShape();
        //可以进行向上转型
        IShape iShape1 = new Cycle();
        IShape iShape2 = new Rect();

        drawMap(iShape1);
        System.out.println("==============");
        drawMap(iShape2);
    }
}
